import Task from '@model/entity/Task'
import AllotTypeEnum from '@model/enum/AllotTypeEnum'

// 重复周期设置
export interface PeriodSetting {
  /** 
   * 重复值
   * example: 1
  */
  period: string | number
  /** 
   * 重复单位
   * example: '天'
  */
  periodUnit: '天' | '周' | '月'
}

// 截止设置
export interface EndSetting {
  /** 
   * 截止方式，日期或次数
   * times: 按截止次数
   * date: 按截止日期
  */
  endBy: 'times' | 'date'
  /** 
   * 日期或次数
   * example: '2020-12-23'
  */
  value: string
}

// 派单设置
export interface AllotSetting {
  /** 
   * 分配方式
   * normal: 按负责人
   * pool: 工单池
   * auto: 自动分配
  */
  allotType: AllotTypeEnum
  // 协同人列表
  synergies: Array<{ displayName: string, userId: string }>
  // 负责人id
  executorId: string | null
  // 负责人名称
  executorName: string | null
  // 团队id
  tagId: string | null
  // 团队名称
  tagName: string | null
}

// 已创建工单
export interface CreatedTask {
  // 创建时间
  createTime: string	
  // 工单编号
  taskNo: string
  // 工单id	
  taskId: string
}

// 计划任务
interface PlanTask {
  // 计划任务id
  id: number
  // 计划任务名称
  name: string
  // 重复周期
  periodSetting: PeriodSetting
  // 截止设置
  endSetting: EndSetting
  // 提前几天创建
  advance: number
  // 派单设置
  allotSetting: AllotSetting
  // 创建人用户id
  createUserId: string
  // 创建人姓名
  createUserName: string
  // 创建时间
  createTime: number
  // 已创建工单
  createdTasks: CreatedTask[]
  // 下次工单创建时间
  nextTaskCreateTime: number | null,
  // 异常标记 0 | 1
  exceptionFlag: number
  // 是否可见客户连接
  linkAuth: boolean
  // 工单信息
  task: Task
  
  /* --- 下面是前端用的 --- */
  templateName?: string
}

// 任务状态
interface TaskStatus {
  // 状态id
  id?: string | null
  // 名称
  name?: string
}

export {
  PlanTask,
  TaskStatus
} 